package AgendaMultitudo;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.MalformedURLException;
import java.util.ArrayList;

import javax.imageio.ImageIO;
import javax.swing.JFileChooser;

public class Arquivo {
	public static void salvar(String arquivo, Object o) throws IOException {		
		ObjectOutputStream fw = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(arquivo)));		
		fw.writeObject(o);
		fw.close();
	}
	public static void salvarEventos(AgendaMultitudo ag){
			try {				
				Arquivo.salvar("Eventos.data",ag.getEventos());								
			} catch (IOException o) {
				System.out.println("Erro.");
			}
		}
	
	
	public static void salvarUsuario(AgendaMultitudo ag){
		try {
			Arquivo.salvar("Usuario.data",ag.getUsuario());
		} catch (IOException o) {
			System.out.println("Erro.");
		}
	}
	
	public static void salvarContatos(AgendaMultitudo ag){
			try {					
				Arquivo.salvar("Contatos.data",ag.getContatos());
			} catch (IOException o) {
				System.out.println("Erro.");
			}
		}
	public static void salvarImagens(Evento e){
		try{
			Arquivo.salvar("Imagens.data", e.getListaDeImagens());
		}catch (IOException o) {
			System.out.println("Erro");
		}
	}
	public static void salvarMusicas(Evento e){
		try{
			Arquivo.salvar("Musicas.data", e.getListaDeMusicas());
		}catch(IOException o){
			System.out.println("Erro");
		}
	}
	
	public static void carregarEventos(String arquivo, AgendaMultitudo ag) throws Exception{
		ObjectInputStream ev = new ObjectInputStream(new BufferedInputStream(new FileInputStream(arquivo)));
			try {
				ArrayList<Evento> evento = (ArrayList<Evento>)ev.readObject();
				ag.carregaListaEventos(evento);
				ev.close();
			} catch (IOException e1) {
				System.out.println("Erro.");
				ev.close();
			}
		}
	
	public static void carregarUsuario(String arquivo,  AgendaMultitudo ag)throws Exception{
		ObjectInputStream usu = new ObjectInputStream(new BufferedInputStream(new FileInputStream(arquivo)));
			try{
				Usuario usuario = (Usuario)usu.readObject();
				ag.cadastraUsuario(usuario);
				usu.close();
			}catch(IOException e1){
				System.out.println("Erro.");
				usu.close();
			}
	}	
	
	public static void carregarContatos(String arquivo,  AgendaMultitudo ag) throws Exception{
		ObjectInputStream con = new ObjectInputStream(new BufferedInputStream(new FileInputStream(arquivo)));
			try{
				ArrayList<Contato> contato = (ArrayList<Contato>)con.readObject();
				ag.carregaListaContatos(contato);
				con.close();
			}catch (IOException e1){
				System.out.println(e1.getMessage());
				con.close();
			}
	}
	
	public static void carregarImagens(String arquivo, Evento e) throws Exception {
		Image imagem = null;
		try{
			File sourceimage = new File(arquivo);
	        imagem = ImageIO.read(sourceimage);
		    e.addImagens(imagem);
		}catch(IOException e1){
			System.out.println("Erro");
		}
	}
	
	public static void carregarAudio(Evento e){
		try {	
			JFileChooser fc = new JFileChooser();
			fc.showOpenDialog(null);
			File file = fc.getSelectedFile();
			AudioPlayer sap = new AudioPlayer(file);
			e.addMusicas(sap);
		}catch (MalformedURLException ex) {
			System.out.println(ex);
		}
	}
}